import { config } from '../config.js'
var TOKEN = "";

class HTTP {
  constructor() {
    this.baseRestUrl = config.api_blink_url;
  }

  //http 请求类, 当noRefech为true时，不做未授权重试机制
  request(params) {
    var that = this
    var url = this.baseRestUrl + params.url;

    if (!params.method) {
      params.method = 'GET';
    }
    if (!params.contentType) {
      params.contentType = 'application/json';
    }
    wx.getStorage({
      key: 'token',
      success:function(res){
        TOKEN = res.data
      }
   })
    wx.request({
      url: url,
      data: params.data,
      method: params.method,
      header: {
        'content-type': params.contentType,
        "token": TOKEN
      },
      
      success: function (res) {
        // 判断以2（2xx)开头的状态码为正确
        // 异常不要返回到回调中，就在request中处理，记录日志并showToast一个统一的错误即可
        var code = res.statusCode.toString();
        var startChar = code.charAt(0);
        if (startChar == '2') {
          if(res.data.code === "401") {
            wx.setStorage({
              data: '',
              key: 'token'
            })
            wx.setStorage({
              data: '',
              key: 'userId'
            })
            wx.showToast({
              title: res.data.msg,
              duration: 3000,
              icon: 'none'
            })
            params.error && params.error(res);
            return;
          }else if (res.data.code !== "0"){
            wx.showToast({
              title: res.data.msg,
              duration: 3000,
              icon: 'none'
            })
            params.error && params.error(res.data);
            return
          }
          params.success && params.success(res.data);
        }
        else {
          wx.showToast({
            title: res.data.error,
            duration: 3000,
            icon: 'none'
          })
          params.error && params.error(res.data);
        }
      },
      fail: function (err) {
        params.fail && params.fail(err)
      }
    });
  }
  
  //http 图片上传类，
  uploadFile(params){
    var url = this.baseRestUrl + params.url;
    wx.uploadFile({
      url: config.api_blink_url+params.url,
      filePath: params.filePath, 
      name: !params.name?"file":params.name,   //后端接收图片的字段名，默认file
      //请求头
      header:{
        'token': TOKEN,
        'content-type':'multipart/form-data',
      },
      success (res){
        // 判断以2（2xx)开头的状态码为正确
        // 异常不要返回到回调中，就在request中处理，记录日志并showToast一个统一的错误即可
        var code = res.statusCode.toString();
        var startChar = code.charAt(0);
        if (startChar == '2') {
          params.success && params.success(res.data);
        } else {
          params.error && params.error(res);
        }
      },
      fail: function (err) {
        params.fail && params.fail(err)
      }
    })
  }
};

export { HTTP };